﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MJM.SCA.EntidadesNegocio;
using MJM.RPP.EntidadesNegocio;
using MJM.SPP.EntidadesNegocio;
using System.Web.UI.DataVisualization.Charting;
using System.Drawing;
using MJM.Principal;

namespace wRegPadron.frmOpciones
{
    public partial class ucLogAplicaciones : System.Web.UI.UserControl
    {
        protected static List<LogTramiteEN> lst2 = new List<LogTramiteEN>();

        protected String CadenaMes(int num)
        {
            switch (num)
            {
                case 1: return "Enero";
                case 2: return "Febrero";
                case 3: return "Marzo";
                case 4: return "Abril";
                case 5: return "Mayo";
                case 6: return "Junio";
                case 7: return "Julio";
                case 8: return "Agosto";
                case 9: return "Septiembre";
                case 10: return "Octubre";
                case 11: return "Noviembre";
                case 12: return "Diciembre";
            }
            return "";
        }

        protected void CargarApps()
        {
            ddlAplicacion.Items.Clear();
            List<string> lstApps = MediadorCN.GetLogTramite().ListadoApps(1);
            for (int i = 0; i < lstApps.Count; i++)
            {
                ddlAplicacion.Items.Add(lstApps[i]);
            }
            ddlAplicacion.SelectedIndex = 0;
        }

        protected void CargarApps2()
        {
            ddlAplicaciones2.Items.Clear();
            List<string> lstApps = MediadorCN.GetLogTramite().ListadoApps(2);
            for (int i = 0; i < lstApps.Count; i++)
            {
                ddlAplicaciones2.Items.Add(lstApps[i]);
            }
            ddlAplicaciones2.SelectedIndex = 0;
        }

        protected void CargarComboMes(int Anio)
        {
            int mesmax = 12;
            if (Anio == DateTime.Now.Year)
            {
                mesmax = DateTime.Now.Month;
            }
            List<GraficoEN> lst = new List<GraficoEN>();
            GraficoEN obj;
            for (int i = 0; i < mesmax; i++)
            {
                obj = new GraficoEN();
                obj.Cantidad = i + 1;
                obj.Texto = CadenaMes(i + 1);
                lst.Add(obj);
            }
            ddlMeses.DataSource = lst;
            ddlMeses.DataTextField = "Texto";
            ddlMeses.DataValueField = "Cantidad";
            ddlMeses.DataBind();
        }

        protected void ddlAnio_SelectedIndexChanged(object sender, EventArgs e)
        {
            CargarComboMes(Convert.ToInt32(ddlAnio.SelectedItem.Text));
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            SubOpcionEN objSubOpcionEN = MediadorCN.GetSubOpcion().ObtenerTexto("MenuLogAplicaciones");
            lblTitulo.Text = objSubOpcionEN.SUBOPT_chNOMSOP;
            lblDescripcion.Text = objSubOpcionEN.SUBOPT_chDESSOP;
            if (!IsPostBack)
            {
                CargarApps();
                CargarApps2();
                int anio = DateTime.Now.Year;
                int dif = 0;
                dif = anio - 2012 + 1;
               // lst2= MediadorCN.GetLogTramite().Listar();
                bdpInicio.SelectedDate = DateTime.Now;
                bdpFin.SelectedDate = DateTime.Now;
                bdpFecInicio.SelectedDate = DateTime.Now;
                bdpFecFin.SelectedDate = DateTime.Now;
                string inicio = bdpInicio.SelectedDate.Year.ToString() + (bdpInicio.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpInicio.SelectedDate.Day + 100).ToString().Substring(1, 2);
                string fin = bdpFin.SelectedDate.Year.ToString() + (bdpFin.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFin.SelectedDate.Day + 100).ToString().Substring(1, 2);
                gvLogTramite.DataSource = MediadorCN.GetLogTramite().ListarLogins(inicio, fin, ddlAplicacion.SelectedItem.Text,1);
                gvLogTramite.DataBind();
                gvAccesos.DataSource = MediadorCN.GetLogTramite().ListarLogins(inicio, fin, ddlAplicaciones2.SelectedItem.Text, 2);
                gvAccesos.DataBind();
                for (int i = 0; i < dif; i++)
                    ddlAnio.Items.Add((anio - i).ToString());
                ddlAnio.SelectedValue = DateTime.Now.Year.ToString();
                CargarComboMes(DateTime.Now.Year);
                ddlMeses.SelectedIndex = ddlMeses.Items.Count - 1;
            }
        }

        protected void btnActualizarLogTramite_Click(object sender, EventArgs e)
        {
            string inicio = bdpInicio.SelectedDate.Year.ToString() + (bdpInicio.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpInicio.SelectedDate.Day + 100).ToString().Substring(1, 2);
            string fin = bdpFin.SelectedDate.Year.ToString() + (bdpFin.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFin.SelectedDate.Day + 100).ToString().Substring(1, 2);
            gvLogTramite.DataSource = MediadorCN.GetLogTramite().ListarLogins(inicio,fin,ddlAplicacion.SelectedItem.Text,1);
            gvLogTramite.DataBind();
        }

        protected void gvLogTramite_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvLogTramite.PageIndex = e.NewPageIndex;
            string inicio = bdpInicio.SelectedDate.Year.ToString() + (bdpInicio.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpInicio.SelectedDate.Day + 100).ToString().Substring(1, 2);
            string fin = bdpFin.SelectedDate.Year.ToString() + (bdpFin.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFin.SelectedDate.Day + 100).ToString().Substring(1, 2);
            gvLogTramite.DataSource = MediadorCN.GetLogTramite().ListarLogins(inicio, fin, ddlAplicacion.SelectedItem.Text,1);
            gvLogTramite.DataBind();
        }

        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            List<GraficoEN> lstDatos = new List<GraficoEN>();
            List<GraficoEN> lst = new List<GraficoEN>();
            Series miSerie = new Series();

            lstDatos = MediadorCN.GetGrafico().TotalAplxMes(ddlAnio.SelectedItem.Text,Convert.ToInt32(ddlMeses.SelectedValue));
            miSerie.Name = "Total de accesos";
            //miSerie["PieLabelStyle"] = "InSide";
            miSerie["PieLabelStyle"] = "OutSide";
            // miSerie["PieLabelStyle"] = "Disabled";
            miSerie.IsValueShownAsLabel = true;
            miSerie.ChartType = System.Web.UI.DataVisualization.Charting.SeriesChartType.Pie;
            miSerie.BackGradientStyle = GradientStyle.DiagonalLeft;
            miSerie.BackSecondaryColor = System.Drawing.Color.LightGray;
            miSerie.Points.DataBind(lstDatos, "Texto", "Cantidad", "");
            miSerie["PieLineColor"] = "Black";
            miSerie["PieDrawingStyle"] = "Concave";
            miSerie.Font = new Font("Arial", 8);

            Grafico1.Series.Add(miSerie);
            Grafico1.ChartAreas[0].Position.Auto = false;
            Grafico1.ChartAreas[0].Position.X = 5;
            Grafico1.ChartAreas[0].Position.Y = 6;
            Grafico1.ChartAreas[0].Position.Width = 85;
            Grafico1.ChartAreas[0].Position.Height = 75;
            Grafico1.ChartAreas[0].AxisX.IsLabelAutoFit = true;
            Grafico1.ChartAreas[0].AxisX.Interval = 1;
            Grafico1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
            Grafico1.ChartAreas[0].AxisY.MajorGrid.Enabled = false;
            Grafico1.ChartAreas[0].AxisY.LabelStyle.Font = new Font("Arial", 8);
            Grafico1.ChartAreas[0].AxisX.LabelAutoFitStyle = LabelAutoFitStyles.None;
            Grafico1.ChartAreas[0].AxisX.RoundAxisValues();
            // Grafico1.ChartAreas[0].Area3DStyle.Enable3D = true;
            Grafico1.Titles[0].Font = new Font("Arial", 12, FontStyle.Bold);
            Grafico1.Titles[0].ForeColor = Color.Black;
            Grafico1.Legends[0].ItemColumnSeparator = LegendSeparatorStyle.DashLine;
            Grafico1.Legends[0].TableStyle = LegendTableStyle.Wide;            

            for (int i = 0; i < lstDatos.Count; i++)
            {
                //lst = new List<GraficoEN>();
                lst = MediadorCN.GetGrafico().TotalAccesosDiarioApl(ddlAnio.SelectedItem.Text, Convert.ToInt32(ddlMeses.SelectedValue), lstDatos[i].Texto);
                miSerie = new Series();
                miSerie["PieLabelStyle"] = "InSide";
                miSerie.IsValueShownAsLabel = false;
                miSerie.Name = lstDatos[i].Texto;
                miSerie.Points.DataBind(lst, "Texto", "Cantidad", "");
                miSerie.ChartType = System.Web.UI.DataVisualization.Charting.SeriesChartType.Area;
                Grafico2.Series.Add(miSerie);
            }

            Grafico2.ChartAreas[0].Position.Auto = false;
            Grafico2.ChartAreas[0].Position.X = 5;
            Grafico2.ChartAreas[0].Position.Y = 15;
            Grafico2.ChartAreas[0].Position.Width = 90;
            if (lstDatos.Count > 8)
                Grafico2.ChartAreas[0].Position.Height = 60;
            else if (lstDatos.Count > 4)
                Grafico2.ChartAreas[0].Position.Height = 65;
            else
                Grafico2.ChartAreas[0].Position.Height = 70;
            Grafico2.ChartAreas[0].AxisX.IsLabelAutoFit = true;
            Grafico2.ChartAreas[0].AxisX.Interval = 1;
            Grafico2.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
            Grafico2.ChartAreas[0].AxisY.MajorGrid.Enabled = false;
            Grafico2.ChartAreas[0].AxisY.LabelStyle.Font = new Font("Arial", 10);
            Grafico2.ChartAreas[0].AxisX.LabelAutoFitStyle = LabelAutoFitStyles.None;
            Grafico2.Titles[0].Font = new Font("Trebuchet MS", 14, FontStyle.Bold);
            Grafico2.Titles[0].ForeColor = Color.Black;
            Grafico2.Legends[0].ItemColumnSeparator = LegendSeparatorStyle.DashLine;
            Grafico2.Legends[0].TableStyle = LegendTableStyle.Wide;            
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            string inicio = bdpFecInicio.SelectedDate.Year.ToString() + (bdpFecInicio.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFecInicio.SelectedDate.Day + 100).ToString().Substring(1, 2);
            string fin = bdpFecFin.SelectedDate.Year.ToString() + (bdpFecFin.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFecFin.SelectedDate.Day + 100).ToString().Substring(1, 2);
            gvAccesos.DataSource = MediadorCN.GetLogTramite().ListarLogins(inicio, fin, ddlAplicaciones2.SelectedItem.Text, 2);
            gvAccesos.DataBind();
        }

        protected void gvAccesos_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvAccesos.PageIndex = e.NewPageIndex;
            string inicio = bdpFecInicio.SelectedDate.Year.ToString() + (bdpFecInicio.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFecInicio.SelectedDate.Day + 100).ToString().Substring(1, 2);
            string fin = bdpFecFin.SelectedDate.Year.ToString() + (bdpFecFin.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFecFin.SelectedDate.Day + 100).ToString().Substring(1, 2);
            gvAccesos.DataSource = MediadorCN.GetLogTramite().ListarLogins(inicio, fin, ddlAplicaciones2.SelectedItem.Text, 2);
            gvAccesos.DataBind();
        }
    }
}